\section{Scikit-learn API}
\textbf{Scikit-Learn API的封装器}

你可以使用Keras的顺序模型(仅限单一输入)作为Scikit-Learn工作流程的一部分，通过在此找到的包装器:
\texttt{keras.wrappers.scikit\_learn.py}.

有两个封装器可用:

\texttt{keras.wrappers.scikit\_learn.KerasClassifier(build\_fn=None,\ **sk\_params)},
这实现了Scikit-Learn分类器接口,

\texttt{keras.wrappers.scikit\_learn.KerasRegressor(build\_fn=None,\ **sk\_params)},
这实现了Scikit-Learn regressor界面。

\textbf{参数}
\begin{itemize}
\tightlist
\item
  \textbf{build\_fn}: 可调用函数或类实例
\item
  \textbf{sk\_params}: 模型参数和拟合参数
\end{itemize}

\texttt{build\_fn}
这应该建立，编译，并返回一个Keras模型，将被用来拟合/预测。
以下之一三个值可以传递给\texttt{build\_fn}

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  函数
\item
  实现\texttt{\_\_call\_\_}函数的类的实例
\item
  没有。这意味着你实现了一个继承的类KerasClassifier或KerasRegressor。
  当前类的\_\_call\_\_函数将被视为默认的\texttt{build\_fn}。
\end{enumerate}

\texttt{sk\_params}同时包含模型参数和拟合参数。
法律模型参数是\texttt{build\_fn}的参数。 类似于其他所有
估计者在Scikit-Learn,
\texttt{build\_fn}应该为其参数提供默认值，这样就可以创建估计器，而不需要将任何值传递给\texttt{sk\_params}。

\texttt{sk\_params}也可以被称为\texttt{fit}，\texttt{predict}，
\texttt{predict\_proba}和\texttt{score}函数 (e.g., \texttt{epochs},
\texttt{batch\_size}). 拟合（预测）参数按以下顺序选择:

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  传递给\texttt{fit}，\texttt{predict}，\texttt{predict\_proba}和\texttt{score}函数的字典参数的值
\item
  传递给\texttt{sk\_params}的值
\item
  \texttt{keras.models.Sequential}的默认值
  \texttt{fit}，\texttt{predict}，\texttt{predict\_proba}和\texttt{score}函数
\end{enumerate}

当scikit-learn使用\texttt{grid\_search}
API时，有效参数与\texttt{sk\_params}相同，包括拟合参数。
换句话说，你可以使用\texttt{grid\_search}来搜索最好的\texttt{batch\_size}或\texttt{epochs}以及模型参数。
\newpage
